package com.gccloud.design.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.gccloud.design.entity.SdActionConfEntity;
import com.gccloud.design.entity.SdRepoActionConfEntity;
import com.gccloud.design.vo.SdActionConfVo;
import com.gccloud.design.vo.SdRepoActionConfVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 实现功能【操作按钮配置业务层】
 *
 * @author hu.hongdou
 * @date 2022/2/21
 */
@Mapper
public interface SdActionConfDao extends BaseMapper<SdActionConfEntity> {

    /**
     * 查询所有表单
     *
     * @return 列表
     */
    List<SdActionConfEntity> queryAllSdActionConf();

    /**
     * @param actionName 动作名称
     * @return 按钮列表
     * 查询所有环节按钮列表
     */
    List<SdActionConfEntity> querySdActionConf(@Param("actionName") String actionName, Page<SdActionConfEntity> page);

    /**
     * 添加按钮
     *
     * @param entity 按钮实体
     * @return 添加按钮
     */
    int saveSdActionConf(@Param("entity") SdActionConfEntity entity);

    /**
     * 更新按钮
     *
     * @param entity 按钮实体
     * @return 添加按钮
     */
    int modefySdActionConf(@Param("entity") SdActionConfEntity entity);

    /**
     * 删除环节按钮
     *
     * @param actionId 按钮主键
     * @return 删除按钮
     */
    int deletdSdActionConfByActionId(@Param("actionId") int actionId);

    /**
     * 环节操作配置：获取环节操作按钮列表
     *
     * @return
     */
    List<SdActionConfVo> getLinkButton(String tacheId);

    /**
     * 环节操作配置：查询环节未配置的操作按钮
     *
     * @return 流程业务列表
     */
    List<SdActionConfVo> queryButtonByTacheId(String tacheId);

    /**
     * 环节操作配置：为某个环节添加按钮,获取当前环节最后显示的按钮显示顺序
     *
     * @param tacheId
     * @return
     */
    Integer getMaxShowLinkButton(@Param("tacheId") String tacheId);

    /**
     * 环节操作配置：为某个环节添加按钮
     *
     * @param sdRepoActionConfEntityList
     * @return
     */
    int addButtonToLink(@Param("sdRepoActionConfEntityList") List<SdRepoActionConfEntity> sdRepoActionConfEntityList);

    /**
     * 环节操作配置:删除环节按钮
     *
     * @param tacheId
     * @return
     */
    int deleteButtonToLink(@Param("tacheId") String tacheId, @Param("arr") Integer[] arr);

    /**
     * 环节操作配置：按钮上移,获取当前按钮信息
     *
     * @param tacheId
     * @return
     */
    List<SdRepoActionConfVo> getShowSort(@Param("tacheId") String tacheId, @Param("id") Integer id);

    /**
     * 环节操作配置：按钮上移,获取按钮之前显示的按钮
     *
     * @param tacheId
     * @return
     */
    List<SdRepoActionConfVo> getMinShowSort(@Param("tacheId") String tacheId, @Param("list1") SdRepoActionConfVo list1);

    /**
     * 环节操作配置：按钮上移,获取按钮之后显示的按钮
     *
     * @param tacheId
     * @return
     */
    List<SdRepoActionConfVo> getMaxShowSort(@Param("tacheId") String tacheId, @Param("list1") SdRepoActionConfVo list1);

    /**
     * 环节操作配置：环节按钮移动
     *
     * @param list
     * @return
     */
    int exchangeShow(@Param("list") List<SdRepoActionConfVo> list);

}
